03 DAC
up的视频讲解从电阻分压开始,理解数字如何决定模拟电压,再认识数据与触发的配合。
1 数字怎样变成电压
DAC 是数模转换器,把数字量转换成对应的模拟输出。数字值决定输出电平;按一定节奏更新数字值,就能得到随时间变化的波形。

本课先用电路模型理解转换原理,再看 DAC 外设框图。课程使用的 STM32F103C8T6 没有片内 DAC,后面的实验通过 IIC 控制外置 DAC 模块。这里的片内 DAC 框图用于理解具备该外设的型号。
2 电阻分压:最直观的转换思路
把参考电压通过电阻分成许多等级,再用开关选取一个节点,就能得到不同输出电压。

依次选择这些电压,会得到阶梯状变化。输出的细腻程度受电压等级数量影响,波形的时间变化还受更新节奏影响。

如果每一个电压等级都需要独立的选择结构,分辨率升高时,电路规模就会迅速增加。接下来引入另一种组织电阻与开关的方法。
3 R-2R 网络如何形成二进制权重
R-2R 网络只使用两种比例的电阻。每一位数字控制一个开关,选择参考电压或地;各支路对输出的贡献按二进制权重叠加。

从三位电路开始推导
先把电路缩小为三位,使用戴维南等效逐段分析:断开负载求开路电压,再把独立电压源置零,求等效内阻。

把等效部分放回电路,继续分析下一段。每多经过一级,相应贡献再减半,因此形成 1/2、1/4、1/8 这样的权重。

从三位扩展到十二位
对于本课的理想 N 位模型,数字量 D 对应的电压可以表示为:
Vout = Vref × D ÷ 2N

12 位有 4096 个数字编码,D 的范围为 0~4095。模型中的一个最低有效位对应 Vref / 4096。这描述的是分辨率,实际输出还会受到器件误差和负载影响。
4 数据、触发与输出如何配合

在图示片内 DAC 中,程序把数据写入数据保持寄存器 DHR。控制逻辑按配置把它送到输出寄存器 DOR,转换器再据此输出电压。
触发来源决定什么时候更新;数据决定更新成什么值。定时器可以提供周期性触发,DMA 可以接续提供数据。具体哪些能力可用,取决于所用型号或外置器件,不能直接把图中的配置套到课程主控上。